"""
作者:张琪
页面:商品管理-添加新商品-详细描述
"""
import time
from Common.Base import Base, open_browser

description_url = 'http://172.16.11.206:8080/ecshop/admin/index.php'


class GoodsDescription(Base):
    """制作定位器"""
    cancel_submit_loc = ('css selector', 'div.panel-cross span')  # Ｘ按钮
    ecseshop_loc = ('id', 'cloudLogin')  # ECShop定位
    username_loc = ('name', 'username')  # 用户名输入框
    password_loc = ('name', 'password')  # 密码输入框
    login_submit_loc = ('class name', 'btn-a')  # 登录按钮
    goods_management_frame = ('id', 'menu-frame')  # 商品管理链接frame
    goods_management = ('class name', 'icon-goods')  # 商品管理链接
    add_goods = ('css selector', 'a[href*="goods.php?act=add"]')  # 添加新商品链接
    general_information_frame = ('id', 'main-frame')  # 通用信息frame
    detail_tab = ('xpath', '//*[@id="detail-tab"]')  # 详细描述页
    goods_name = ('name', 'goods_name')  # 商品名称输入框
    goods_categories_first = ('css selector', 'select[name="cat_id"]>option:nth-of-type(2)')  # 选择商品类别为家用电器
    goods_desc_Frame = ('id', 'goods_desc___Frame')  # goods_desc___Frame的frame
    goods_desc_Frame_2 = ('css selector', 'iframe[src*="javascript:void(0)"]')  # 富文本第二层iframe
    body = ('css selector', 'body[spellcheck*="false"]')  # 富文本输入框
    define = ('css selector', 'input[value*="确定"]')  # 确定按钮
    reset = ('css selector', 'input[value*="重置"]')  # 重置按钮
    add_goods_name = ('css selector', 'td.first-cell>span')  # 新增商品
    is_on_sale_submit = ('xpath', '/html/body/div[3]/form/input[1]')  # 上架按钮
    search_submit = ('xpath', '/html/body/div[3]/form/button')  # 搜索按钮

    """封装操作层"""

    def login(self, username, password):
        """登录账号"""
        self.click(self.cancel_submit_loc)  # 点击Ｘ按钮
        time.sleep(1)
        self.click(self.ecseshop_loc)  # 点击ECShop登录
        self.send_keys(self.username_loc, username)  # 输入用户名
        self.send_keys(self.password_loc, password)  # 输入密码
        self.click(self.login_submit_loc)  # 点击登录

    def get_into_goods(self):
        """进入商品"""
        self.into_frame(self.goods_management_frame)  # 进入商品管理链接frame
        self.click(self.goods_management)  # 点击商品管理页面
        self.out_frame()  # 退出frame

    def get_into_add_goods(self):
        """进入添加商品"""
        self.into_frame(self.goods_management_frame)  # 进入商品管理链接frame
        self.click(self.add_goods)  # 点击添加新商品页面
        self.out_frame()  # 退出frame

    def body_input(self, name, text):
        """操作富文本"""
        self.into_frame(self.general_information_frame)  # 进入通用信息frame
        self.send_keys(self.goods_name, name)  # 输入商品名称
        self.click(self.goods_categories_first)  # 选择商品种类为家用电器
        self.click(self.detail_tab)  # 点击详细描述页
        self.into_frame(self.goods_desc_Frame)  # 进入富文本第一层iframe
        self.into_frame(self.goods_desc_Frame_2)  # 进入富文本第二层iframe
        self.send_keys(self.body, text)  # 在富文本输入框中输入内容
        self.out_frame()  # 退出frame

    def define_click(self):
        """点击确定按钮"""
        self.into_frame(self.general_information_frame)  # 进入通用信息frame
        self.click(self.define)  # 点击确定按钮
        time.sleep(8)

    def is_add_success(self, text):
        """
        判断新增商品是否成功,如果成功,返回TRUE,反之返回False
        @return:
        """
        self.click(self.is_on_sale_submit)  # 点击上架按钮
        self.click(self.search_submit)  # 点击搜索按钮
        return self.is_text_equal_in_element(self.add_goods_name, text)  # 判断新增商品是否成功,如果成功,返回TRUE,反之返回False


if __name__ == '__main__':
    login = GoodsDescription(open_browser())  # 打开浏览器
    login.open_url(description_url)  # 进入商品详情页面
    login.login('root', 'root123456')  # 输入用户名,密码
    login.get_into_goods()  # 进入商品管理
    login.body_input("1232", "hello!!!")  # 操作富文本
    login.define_click()  # 点击确定按钮
    # login.reset_click()#点击重置按钮
